﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace Noris.Tools.FrxEditor.Pics
{
    public class IconLibrary16
    {
        #region Image DialogApply
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku dialog-apply.png.
        /// Vrací přímou referenci na objekt v paměti = volání je velice rychlé (pod 1 mikrosekundu), 
        /// ale protože se vrací živá reference, pak zásahy do vráceného objektu se projeví v objektu v paměti = natrvalo.
        /// Případně je možno vyvolat metodu DialogApply_Reset(), která zajistí regenerování obrázku z jeho definice.
        /// Bezpečnější je používání property DialogApply, která vrací vždy nový objekt.
        /// Pro používání pro Button.Image, kde bude nastavováno Button.Enabled = false; je třeba použít property DialogApply_FromFile.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// D:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\dialog-apply.png
        /// </remarks>
        public static System.Drawing.Image DialogApply_Cached
        {
            get
            {
                if (_DialogApply == null) _DialogApply = DialogApply;
                return _DialogApply;
            }
        }
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku dialog-apply.png.
        /// Nelze používat jako Image pro Buttony, kde bude nastavováno Enabled = false (pak dojde k chybě .NET: Ot of memory).
        /// Pak je třeba použít Image DialogApply_FromFile.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití DialogApply_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property DialogApply_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// D:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\dialog-apply.png
        /// </remarks>
        public static System.Drawing.Image DialogApply { get { return _ImageCreateFrom(_DialogApply_string, null); } }
        /// <summary>
        /// Vrátí obrázek, načtený ze souboru dialog-apply.png.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití DialogApply_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property DialogApply_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// D:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\dialog-apply.png
        /// </remarks>
        public static System.Drawing.Image DialogApply_FromFile { get { return _ImageCreateFrom(_DialogApply_string, "dialog-apply.png"); } }
        /// <summary>
        /// Vygeneruje a vrátí string, který definuje obsah souboru DialogApply
        /// </summary>
        /// <returns></returns>
        private static string _DialogApply_string()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(1364);
            sb.Append("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAA3XAAAN1wFCKJt4AAAACXZwQWcAAAAQAAAAEABcxq3DAAAC");
            sb.Append("ZklEQVQ4y5WTX0gUURTGvzv3zurutv5rNWhDRUJNAycQMgMNtyhJCqIQ+kcPgYFIQg9tUb0l8xpB5EsRPRlRiYFWTFRaQkXmSpqpIZW2bWrbTrvrzNy704tGmKGe58Pv");
            sb.Append("nPOd7yO2bWO55Q94NsmMdRJCRkzLatRUPUhWAqg9n/XmyK4GhQsT957emk2YMVVawfQ967LzC4tzS0mBL4+cPHDOCYITywL4Ax4qM3Z5X/VBd1gfgkxT0TPwyEiK5M1l");
            sb.Append("AQghx0vyy7zZmV4I24JhJNHdr5lciItLAvwBj5tRqtZV7ndN/ggi212Ejhe3E1yIC5qqR5cEUEk6XV5cmcpkAdsmCM+EERx7HbVt+woAsPnGHWfT6xmll2zbvmtx3qSp");
            sb.Append("OvcHPDkOJp+qKqtJnZgOwpep4EbXtTjnollTdRMApLk1FQdLuX6stmHNhryNR2XGev0BTw6jtKWidCszrGlQ4sToxDAmvo9/AtA2P1gCAJmxtt1b6pyybMFfXuOqUrYp");
            sb.Append("jLF3lLJDZesVRzg6BpfsRWfv/YTFeaOm6n/MM3/C6Icv7/NyMitTQvowCtb6WMaqvas5N5L67FfIkhsDH98m9UTklabqj//WSAIAi/P6ofHB7vae9jiTPIjEQnDIJvFm");
            sb.Append("ZNFILARiO9ATfG5YXDQtFFkCAE3Vf3Ehdn6bCV+986QjbhqAaRmYnBqETJzoG+m3uLA6NFUP/uORhVnYfibtMKVSa0WJ4vKmp8PiNh68fJbgQhRpqv55ScDcVzZTSeos");
            sb.Append("zM1Ni8biVmh6qvVhy8/mRV36vzT6Ax4fpVIXAZJcJKs1VY8s1vcbnWoQKAwBvI4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTAtMDEtMTFUMDk6MTI6NDQtMDc6MDD9MHEd");
            sb.Append("AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEwLTAxLTExVDA5OjEyOjQ0LTA3OjAwjG3JoQAAADR0RVh0TGljZW5zZQBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNl");
            sb.Append("bnNlcy9HUEwvMi4wL2xqBqgAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAE3RFWHRTb3VyY2UAR05PTUUtQ29sb3JzqplE4gAAADF0RVh0U291");
            sb.Append("cmNlX1VSTABodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ25vbWUtY29sb3JzL1AdtesAAAAASUVORK5CYII=");
            return sb.ToString();
        }
        /// <summary>
        /// Resetuje obrázek v paměti.
        /// Následující použití property DialogApply_Direct si vytvoří nový, korektní - podle jeho originální deklarace.
        /// Tuto metodu je vhodné použít v situaci, kdy je správnost obrázku v paměti nejistá.
        /// </summary>
        public static void DialogApply_Reset()
        {
            _DialogApply = null;
        }
        /// <summary>
        /// Úložiště objektu v paměti, při prvním použití DialogApply_Direct je objekt naplněn a následně využíván.
        /// </summary>
        private static System.Drawing.Image _DialogApply = null;
        #endregion
        #region Image DialogSave
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku document-save-3.png.
        /// Vrací přímou referenci na objekt v paměti = volání je velice rychlé (pod 1 mikrosekundu), 
        /// ale protože se vrací živá reference, pak zásahy do vráceného objektu se projeví v objektu v paměti = natrvalo.
        /// Případně je možno vyvolat metodu DialogSave_Reset(), která zajistí regenerování obrázku z jeho definice.
        /// Bezpečnější je používání property DialogSave, která vrací vždy nový objekt.
        /// Pro používání pro Button.Image, kde bude nastavováno Button.Enabled = false; je třeba použít property DialogSave_FromFile.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// D:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\document-save-3.png
        /// </remarks>
        public static System.Drawing.Image DialogSave_Cached
        {
            get
            {
                if (_DialogSave == null) _DialogSave = DialogSave;
                return _DialogSave;
            }
        }
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku document-save-3.png.
        /// Nelze používat jako Image pro Buttony, kde bude nastavováno Enabled = false (pak dojde k chybě .NET: Ot of memory).
        /// Pak je třeba použít Image DialogSave_FromFile.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití DialogSave_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property DialogSave_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// D:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\document-save-3.png
        /// </remarks>
        public static System.Drawing.Image DialogSave { get { return _ImageCreateFrom(_DialogSave_string, null); } }
        /// <summary>
        /// Vrátí obrázek, načtený ze souboru document-save-3.png.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití DialogSave_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property DialogSave_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// D:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\document-save-3.png
        /// </remarks>
        public static System.Drawing.Image DialogSave_FromFile { get { return _ImageCreateFrom(_DialogSave_string, "document-save-3.png"); } }
        /// <summary>
        /// Vygeneruje a vrátí string, který definuje obsah souboru DialogSave
        /// </summary>
        /// <returns></returns>
        private static string _DialogSave_string()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(1328);
            sb.Append("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAG7AAABuwE67OPiAAAACXZwQWcAAAAQAAAAEABcxq3DAAAB");
            sb.Append("wUlEQVQ4y6WTPWgUURDHf+8leHvdqVckKWMrYmchiB9cl6AQsRJbS7WwkGAnGLRW7G1U7ExhobWdAcuDA1N4HhE0u7cf2d038yx2PXc9CyUD817x+P/nNzM8473nMLEI");
            sb.Append("sL629uPgIO/dunO39WgsgMVagzFgqPLxoy2CoLP/Znv76CJAmqS9peUlzp2/QJPHQCU0BmsN1oC1htevXjAajXozAlUl6AQERxZ4/u5Tm6I+DBXFjcEpRARV/d2CqOKc");
            sb.Append("w1q4fukkBmYk3nvU17d6krzEOYc0DVQVEWGaFVXFX+LKAe9Bva9S/TyBiuCcI84KXr790GphtiUPHs/G4AzOOVRkniCKMwZnTzfVNUUl9h6mSf4XAhXEOe7fvvnP+1dt");
            sb.Append("EIhUQ/yfEPlzBmUJwIOth3S73Rm+MaYWCNc2riIinFhdbc+gdI68KAAYDoc8e/KUNEu5t7nZqrq8ssL46xhRpayJK4OyJM9zAKIoIkkS4jgmDMP2RlRRUfr9Pp93d1tD");
            sb.Append("/B5F4bGgExCFEVmWkRfFnEGSJJRlSZamSJPAiFyMptP3YRgd3/u2x/qVywBMJpOWwZfxGPB83NnBLth9AHPY7/wT+9Ie9uKUqZ8AAAAldEVYdGNyZWF0ZS1kYXRlADIw");
            sb.Append("MDktMTEtMTVUMTc6MDI6MzQtMDc6MDC2544SAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEwLTAyLTIwVDIzOjI2OjE1LTA3OjAwBjtcgQAAACV0RVh0ZGF0ZTptb2RpZnkA");
            sb.Append("MjAxMC0wMS0xMVQwOToyNDozOC0wNzowMNX0vIoAAABndEVYdExpY2Vuc2UAaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4wLyBvciBo");
            sb.Append("dHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9MR1BMLzIuMS9bjzxjAAAAJXRFWHRtb2RpZnktZGF0ZQAyMDA5LTAzLTE5VDEwOjUyOjUwLTA2OjAw2R/2");
            sb.Append("sgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAATdEVYdFNvdXJjZQBPeHlnZW4gSWNvbnPsGK7oAAAAJ3RFWHRTb3VyY2VfVVJMAGh0dHA6Ly93");
            sb.Append("d3cub3h5Z2VuLWljb25zLm9yZy/vN6rLAAAAAElFTkSuQmCC");
            return sb.ToString();
        }
        /// <summary>
        /// Resetuje obrázek v paměti.
        /// Následující použití property DialogSave_Direct si vytvoří nový, korektní - podle jeho originální deklarace.
        /// Tuto metodu je vhodné použít v situaci, kdy je správnost obrázku v paměti nejistá.
        /// </summary>
        public static void DialogSave_Reset()
        {
            _DialogSave = null;
        }
        /// <summary>
        /// Úložiště objektu v paměti, při prvním použití DialogSave_Direct je objekt naplněn a následně využíván.
        /// </summary>
        private static System.Drawing.Image _DialogSave = null;
        #endregion
        #region Image DialogCancel
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku dialog-cancel.png.
        /// Vrací přímou referenci na objekt v paměti = volání je velice rychlé (pod 1 mikrosekundu), 
        /// ale protože se vrací živá reference, pak zásahy do vráceného objektu se projeví v objektu v paměti = natrvalo.
        /// Případně je možno vyvolat metodu DialogCancel_Reset(), která zajistí regenerování obrázku z jeho definice.
        /// Bezpečnější je používání property DialogCancel, která vrací vždy nový objekt.
        /// Pro používání pro Button.Image, kde bude nastavováno Button.Enabled = false; je třeba použít property DialogCancel_FromFile.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// D:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\dialog-cancel.png
        /// </remarks>
        public static System.Drawing.Image DialogCancel_Cached
        {
            get
            {
                if (_DialogCancel == null) _DialogCancel = DialogCancel;
                return _DialogCancel;
            }
        }
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku dialog-cancel.png.
        /// Nelze používat jako Image pro Buttony, kde bude nastavováno Enabled = false (pak dojde k chybě .NET: Ot of memory).
        /// Pak je třeba použít Image DialogCancel_FromFile.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití DialogCancel_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property DialogCancel_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// D:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\dialog-cancel.png
        /// </remarks>
        public static System.Drawing.Image DialogCancel { get { return _ImageCreateFrom(_DialogCancel_string, null); } }
        /// <summary>
        /// Vrátí obrázek, načtený ze souboru dialog-cancel.png.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití DialogCancel_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property DialogCancel_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// D:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\dialog-cancel.png
        /// </remarks>
        public static System.Drawing.Image DialogCancel_FromFile { get { return _ImageCreateFrom(_DialogCancel_string, "dialog-cancel.png"); } }
        /// <summary>
        /// Vygeneruje a vrátí string, který definuje obsah souboru DialogCancel
        /// </summary>
        /// <returns></returns>
        private static string _DialogCancel_string()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(1756);
            sb.Append("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANkE3LLaAgAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAAl2cEFn");
            sb.Append("AAAAEAAAABAAXMatwwAAA45JREFUOMtF0b1vG2UAx/Hf8zz35jvbpziOXSdulKRJ3JYmKlFTBCJiKC9CVSpVQkIMTOwVA1SVAFUIFsSbulS0QsDUoUNFBQEiVQpNoiJM");
            sb.Append("SofEcZ1A0ja+4Nic7+qc7813PoYOfP+Az/IlbYCQmZmCODHxUUQI81dX37u/uHh/WFWjnsePAQD7hQKcSoVTz559iRscfL/bat12i8XPo0ZD5/zx8eHk5OTb9OTJV0EI");
            sb.Append("BEEwDjvOJ7FiceMhIUimUmhUKrT/9OnnuKmpd+jY2DRtNodF19X/nZ//mv6m68/UNW02sm0FjCns0KE3hOnpD5wTJ8YvA+g0m6z/1KkZfmLiY5rLvYAw5IN2O/dI015f");
            sb.Append("sO0RlnWcKXt39+Ve348nenpARJGnkjRGKU3N+P6GVCgc4Y8du0jz+edBCAurVWzOzeHWysre7647xzIAZ3veuKtpI2nXpQlVBeF5ngpCgfL8UZbNztJc7lkALNQ0bMzP");
            sb.Append("49a9e9aq79/cBn5mJqBLwG7U6Qx1arV82vdZXFGeILI8QmR5AFFEw1oN28vL+LVUstY6nRtl4NIC8JANAeEdYKcPeIAg6I8ajcEswGKqCkQRQRAQWBZ2i0Usrq9ba0Fw");
            sb.Append("vQR8dhsoK0DElQAcB4KbwHKaUo6T5X7CcZPwPIDjAAAIArBYrCvE43cemealBWD9IBDtAOD2EgmokgTm+4KjqgNcPp+UMhkgDIFOB6AUIATZTIac8bzsrGEMXiOkEkmS");
            sb.Append("V7UssE+TSbjdboITxTclnj/Pc9wIAUjY6aBRrcI1TUhRBGpZhA+CDMfYUVCqu77/d7+iBOyCKGZEQXiLSdJ5oihDUBQSCgL+qddRqVR8vdnsSvE4k9NpEFEkhNIcBY5z");
            sb.Append("hOx7QbDF3pXlc5IknSOJxAB6ehD09qLeamFzc1Mv7e9/b/j+FnPdg1ImI8ayWVDGQIAUguApy/MM9hohFxRZflrs6yNhXx/qhoGtcrm2ZppXfwS+0IClpG0LfKs1KqRS");
            sb.Append("sdiBAyDdLsxmM1HZ2zPYi0HwChdFh6Vcjmt5HrbX1nZWTfOrH4CrvwDVdUAXgbLqOFQwjFEhmYx3ggBb5bK9YRhLbBSwFCDLx2L5hqY9+LPR+PIG8N08UP/wyUSUAPMi");
            sb.Append("sJ60bUdqt8fsdpv/q1b7aSUMv+GuAEtdQki71WrprvvHdeDaEqAz/F8agA7susC3oePQZBQduUvIlcvA3f8A+J+WVvlUkfcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTAt");
            sb.Append("MDItMTdUMDc6MTI6MjctMDc6MDAAloH6AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEwLTAxLTMxVDA3OjMzOjAyLTA3OjAw8oO86QAAADV0RVh0TGljZW5zZQBodHRwOi8v");
            sb.Append("Y3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9MR1BMLzIuMS87wbQYAAAAHHRFWHRTb3VyY2UAQ3J5c3RhbCBDbGVhciBQcm9qZWN0hcGKNwAAADp0RVh0U291cmNl");
            sb.Append("X1VSTABodHRwOi8vY29tbW9ucy53aWtpbWVkaWEub3JnL3dpa2kvQ3J5c3RhbF9DbGVhcq++RWMAAAAASUVORK5CYII=");
            return sb.ToString();
        }
        /// <summary>
        /// Resetuje obrázek v paměti.
        /// Následující použití property DialogCancel_Direct si vytvoří nový, korektní - podle jeho originální deklarace.
        /// Tuto metodu je vhodné použít v situaci, kdy je správnost obrázku v paměti nejistá.
        /// </summary>
        public static void DialogCancel_Reset()
        {
            _DialogCancel = null;
        }
        /// <summary>
        /// Úložiště objektu v paměti, při prvním použití DialogCancel_Direct je objekt naplněn a následně využíván.
        /// </summary>
        private static System.Drawing.Image _DialogCancel = null;
        #endregion
        #region Image EditUndo
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku edit-undo-3.png.
        /// Vrací přímou referenci na objekt v paměti = volání je velice rychlé (pod 1 mikrosekundu), 
        /// ale protože se vrací živá reference, pak zásahy do vráceného objektu se projeví v objektu v paměti = natrvalo.
        /// Případně je možno vyvolat metodu EditUndo_Reset(), která zajistí regenerování obrázku z jeho definice.
        /// Bezpečnější je používání property EditUndo, která vrací vždy nový objekt.
        /// Pro používání pro Button.Image, kde bude nastavováno Button.Enabled = false; je třeba použít property EditUndo_FromFile.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// C:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\edit-undo-3.png
        /// </remarks>
        public static System.Drawing.Image EditUndo_Cached
        {
            get
            {
                if (_EditUndo == null) _EditUndo = EditUndo;
                return _EditUndo;
            }
        }
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku edit-undo-3.png.
        /// Nelze používat jako Image pro Buttony, kde bude nastavováno Enabled = false (pak dojde k chybě .NET: Ot of memory).
        /// Pak je třeba použít Image EditUndo_FromFile.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití EditUndo_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property EditUndo_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// C:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\edit-undo-3.png
        /// </remarks>
        public static System.Drawing.Image EditUndo { get { return _ImageCreateFrom(_EditUndo_string, null); } }
        /// <summary>
        /// Vrátí obrázek, načtený ze souboru edit-undo-3.png.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití EditUndo_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property EditUndo_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// C:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\edit-undo-3.png
        /// </remarks>
        public static System.Drawing.Image EditUndo_FromFile { get { return _ImageCreateFrom(_EditUndo_string, "edit-undo-3.png"); } }
        /// <summary>
        /// Vygeneruje a vrátí string, který definuje obsah souboru EditUndo
        /// </summary>
        /// <returns></returns>
        private static string _EditUndo_string()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(1208);
            sb.Append("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAuHAAALhwGTQIdTAAAACXZwQWcAAAAQAAAAEABcxq3DAAAB");
            sb.Append("wklEQVQ4y6WTzUtUURjGf/fcO9EoRFZCtAmRNgbRKmjRH1DiQlwYhdwBUakcYlYtp0Foe4khaBzEe/1A2hQotoikhRC0METQmERoQhBsopi+Ls71vC2muc2oIxO9u/Px");
            sb.Append("/N734TwH6pTrIDRQ6n/EBwJcB7Fvv2lUj7VPfGsBCPZN8j6izj8Y1mt1Sa6DiP9KpJgS+flEpLQqsrMkUnonUrgqroOk0urOXp1R09mfrTJ3Gswz5WkilyBYw8v0krfU");
            sb.Append("cDKuH1Wuma6D2ANZ2FmsRct3kG+gToIuwJELXOwo8eHt0rWOLjWz+Fw+A1h5Sw152YGM3dfFRm7uQHvtbS3QMgXRGwRBliZTbgLJ0EIqrQbPBjpj93WykZun/dwVONrz");
            sb.Append("x8oJMJrRKJR5HPyneONpYomy1qh0qYagi3jTfy1pDdftMaLRY6AsvMfdISDMQTKuR/OWGvIm58E8BUAsgRFLYPwwWX79sh/kF4hfP0ghZOJZzaVtU93b3AKMZtjdPDyJ");
            sb.Append("FUj13khcvyi/TJHCpy/1k1gNAUbDdVr1EmjY/cj6+go+3OdfynUQ+ZoQ2b4sez+a1QhgyzQeeuPOXYBcRLWCDs9+AzkHwCHMdHk0AAAAJXRFWHRjcmVhdGUtZGF0ZQAy");
            sb.Append("MDA5LTExLTE1VDIzOjA0OjA1LTA3OjAwL9m9TwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMC0wMi0yMFQyMzoyNjoxNS0wNzowMAY7XIEAAAAldEVYdGRhdGU6bW9kaWZ5");
            sb.Append("ADIwMTAtMDEtMTFUMDk6MDg6MzktMDc6MDAx0+5xAAAANHRFWHRMaWNlbnNlAGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL0dQTC8yLjAvbGoGqAAA");
            sb.Append("ACV0RVh0bW9kaWZ5LWRhdGUAMjAwOS0xMS0xNVQyMzowNDowNS0wNzowMHBoy3sAAAAXdEVYdFNvdXJjZQBHTk9NRSBJY29uIFRoZW1lwfkmaQAAACB0RVh0U291cmNl");
            sb.Append("X1VSTABodHRwOi8vYXJ0Lmdub21lLm9yZy8y5JF5AAAAAElFTkSuQmCC");
            return sb.ToString();
        }
        /// <summary>
        /// Resetuje obrázek v paměti.
        /// Následující použití property EditUndo_Direct si vytvoří nový, korektní - podle jeho originální deklarace.
        /// Tuto metodu je vhodné použít v situaci, kdy je správnost obrázku v paměti nejistá.
        /// </summary>
        public static void EditUndo_Reset()
        {
            _EditUndo = null;
        }
        /// <summary>
        /// Úložiště objektu v paměti, při prvním použití EditUndo_Direct je objekt naplněn a následně využíván.
        /// </summary>
        private static System.Drawing.Image _EditUndo = null;
        #endregion
        #region Image EditRedo
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku edit-redo-3.png.
        /// Vrací přímou referenci na objekt v paměti = volání je velice rychlé (pod 1 mikrosekundu), 
        /// ale protože se vrací živá reference, pak zásahy do vráceného objektu se projeví v objektu v paměti = natrvalo.
        /// Případně je možno vyvolat metodu EditRedo_Reset(), která zajistí regenerování obrázku z jeho definice.
        /// Bezpečnější je používání property EditRedo, která vrací vždy nový objekt.
        /// Pro používání pro Button.Image, kde bude nastavováno Button.Enabled = false; je třeba použít property EditRedo_FromFile.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// C:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\edit-redo-3.png
        /// </remarks>
        public static System.Drawing.Image EditRedo_Cached
        {
            get
            {
                if (_EditRedo == null) _EditRedo = EditRedo;
                return _EditRedo;
            }
        }
        /// <summary>
        /// Vrátí obrázek, vytvořený na základě obrázku edit-redo-3.png.
        /// Nelze používat jako Image pro Buttony, kde bude nastavováno Enabled = false (pak dojde k chybě .NET: Ot of memory).
        /// Pak je třeba použít Image EditRedo_FromFile.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití EditRedo_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property EditRedo_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// C:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\edit-redo-3.png
        /// </remarks>
        public static System.Drawing.Image EditRedo { get { return _ImageCreateFrom(_EditRedo_string, null); } }
        /// <summary>
        /// Vrátí obrázek, načtený ze souboru edit-redo-3.png.
        /// Vrací vždy novou instanci = volání je při častém používání výrazně (až 1000krát) pomalejší než použití EditRedo_Cached
        /// (kde ale hrozí nebezpečí pokažení obrázku v paměti).
        /// Čas pro vytvoření jednoho Image (tj. každé jednotlivé čtení této property) pro obrázek velikosti 32x32 px (32bpp) je průměrně 350 mikrosekund.
        /// Pokud je třeba používat obrázek často a rychle, je možné využít property EditRedo_Cached.
        /// </summary>
        /// <remarks>
        /// Plné jméno vstupního souboru:
        /// C:\LCS\Tools\GreenSchedule4\FrxEditor\Pics\16\edit-redo-3.png
        /// </remarks>
        public static System.Drawing.Image EditRedo_FromFile { get { return _ImageCreateFrom(_EditRedo_string, "edit-redo-3.png"); } }
        /// <summary>
        /// Vygeneruje a vrátí string, který definuje obsah souboru EditRedo
        /// </summary>
        /// <returns></returns>
        private static string _EditRedo_string()
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder(1176);
            sb.Append("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAuHAAALhwGTQIdTAAAACXZwQWcAAAAQAAAAEABcxq3DAAAB");
            sb.Append("qElEQVQ4y42TUWhSURiAv+vEmr6F2nuBRMF6lKCXCgJfHPQi3LF6KK4bK+itFhTspbegwLEhxKCgooix2/YSoRQEPQwmwwkmJRU6yxKnkXL1enpo165elfs/nv983/nP");
            sb.Append("+f8DNiIcd4lhOYcdwSiJbcHipQ8DJc4hpx0HdsxrQmpz/2ICOCtURZNGlToXjrvE44osyq2cKGrb4kcrK9KNNZGs3xP55nthrkTqh4HY3ekX+JwBCq0tHDipdUr81svd");
            sb.Append("fccOnOf6o3OoiiZJJjgAZC9HrnHKrVBqp9FFi196Hq3zx1Lp4fZJFl7KPW8wJerjTBy8QFX/xkbtFsXPlYHXDPpklhMyQNQsuDNz5SoAD79MEXCE8Ht7wdTPDYJemeeJ");
            sb.Append("JYCoqmjxni4ccZ1mvXaTgCPE2voqeBrd3OQZ+R+c/A9b5qBNE3f1KLlPH8HTSKmKJhktc48dssAWwZ6+C0Dm6ybADXPu6ZuYBbYIVt7exu/zA6Aq2uu+t7PA/YIT5UKd");
            sb.Append("pqgbbY0Yif2rWOAegapoGYDq9wazkXmAZ9iI/r/ge/XuiTFyD+wI/gKvfrEdDwZeuAAAACV0RVh0Y3JlYXRlLWRhdGUAMjAwOS0xMS0xNVQyMzowNDowNS0wNzowMC/Z");
            sb.Append("vU8AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTAtMDItMjBUMjM6MjY6MTUtMDc6MDAGO1yBAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEwLTAxLTExVDA5OjA4OjM4LTA3OjAw");
            sb.Append("l6TlxQAAADR0RVh0TGljZW5zZQBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9HUEwvMi4wL2xqBqgAAAAldEVYdG1vZGlmeS1kYXRlADIwMDktMTEt");
            sb.Append("MTVUMjM6MDQ6MDUtMDc6MDBwaMt7AAAAF3RFWHRTb3VyY2UAR05PTUUgSWNvbiBUaGVtZcH5JmkAAAAgdEVYdFNvdXJjZV9VUkwAaHR0cDovL2FydC5nbm9tZS5vcmcv");
            sb.Append("MuSReQAAAABJRU5ErkJggg==");
            return sb.ToString();
        }
        /// <summary>
        /// Resetuje obrázek v paměti.
        /// Následující použití property EditRedo_Direct si vytvoří nový, korektní - podle jeho originální deklarace.
        /// Tuto metodu je vhodné použít v situaci, kdy je správnost obrázku v paměti nejistá.
        /// </summary>
        public static void EditRedo_Reset()
        {
            _EditRedo = null;
        }
        /// <summary>
        /// Úložiště objektu v paměti, při prvním použití EditRedo_Direct je objekt naplněn a následně využíván.
        /// </summary>
        private static System.Drawing.Image _EditRedo = null;
        #endregion
        #region SPOLEČNÉ METODY PRO KONVERZI
        /// <summary>
        /// Vrátí Image z definice (string). Image generuje buď v paměti, anebo s pomocí souboru.
        /// Pokud není zadán parametr (cacheFileName) (když je null), generuje se Image v paměti.
        /// Pokud je soubor (cacheFileName) definován, pak se Image čte z něj.
        /// Pokud soubor neexistuje, nejprve se vytvoří.
        /// Umístění souboru (adresář) je dán property _ImageCacheDir, defaultně je to adresář (Sys:\Documents and Settings\All Users\Data aplikací\IconCache).
        /// Obsah obrázku definuje metoda getDataMethod.
        /// </summary>
        /// <param name="getDataMethod"></param>
        /// <param name="cacheFileName"></param>
        /// <returns></returns>
        private static System.Drawing.Image _ImageCreateFrom(_GetStringDelegate getDataMethod, string cacheFileName)
        {
            System.Drawing.Image image;
            if (cacheFileName == null)
            {
                using (System.IO.MemoryStream ms = new System.IO.MemoryStream(Convert.FromBase64String(getDataMethod())))
                {
                    image = System.Drawing.Image.FromStream(ms);
                }
                return image;
            }
            string fileName = System.IO.Path.Combine(_ImageCacheDir, cacheFileName);
            if (!System.IO.File.Exists(fileName))
                System.IO.File.WriteAllBytes(fileName, Convert.FromBase64String(getDataMethod()));
            if (System.IO.File.Exists(fileName))
                return Image.FromFile(fileName);
            return null;
        }
        /// <summary>
        /// Obsahuje jméno adresáře, který slouží jako Cache pro obrázky systému.
        /// </summary>
        private static string _ImageCacheDir
        {
            get
            {
                string dirName = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData), "Editor\\IconCache16");
                if (!System.IO.Directory.Exists(dirName))
                    System.IO.Directory.CreateDirectory(dirName);
                return dirName;
            }
        }
        /// <summary>
        /// Předpis pro metody, které generují obsah souboru s daty
        /// </summary>
        /// <returns></returns>
        private delegate string _GetStringDelegate();
        /// <summary>
        /// Vrátí Icon z dat (string), která jsou předána na vstup v kódování Base64
        /// </summary>
        /// <param name="data">Vstupní data v kódování Base64</param>
        /// <returns>Icon vytvořená z dat</returns>
        public static System.Drawing.Icon ConvertStringToIcon(string data)
        {
            System.Drawing.Icon icon;
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream(Convert.FromBase64String(data)))
            {
                icon = new System.Drawing.Icon(ms);
            }
            return icon;
        }
        /// <summary>
        /// Vrátí Cursor z dat (string), která jsou předána na vstup v kódování Base64
        /// </summary>
        /// <param name="data">Vstupní data v kódování Base64</param>
        /// <returns>Cursor vytvořený z dat</returns>
        public static System.Windows.Forms.Cursor ConvertStringToCursor(string data)
        {
            System.Windows.Forms.Cursor cursor;
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream(Convert.FromBase64String(data)))
            {
                cursor = new System.Windows.Forms.Cursor(ms);
            }
            return cursor;
        }
        #endregion
    }
}
